package com.xiaotu.singleton.type7;

/**
 * @author 张晓
 * @create 2020-06-18 16:21
 */
public class SingletonTest07 {
    public static void main(String[] args) {
        //测试
        System.out.println("使用静态内部类完成单例模式");
        Singleton instance = Singleton.getInstance();
        Singleton instance2 = Singleton.getInstance();
        System.out.println(instance == instance2);

        System.out.println("instance.hashCode()=" + instance.hashCode());
        System.out.println("instance2.hashCode()=" + instance2.hashCode());
    }
}

//静态内部类完成
class Singleton {

    private Singleton(){};


    //注意：当外部类加载的时候，并不会加载静态内部类，而是在调用的时候在加载
    //写一个静态内部类，该类中有一个静态属性
    private static class SingletonInstance{
        private static final Singleton INSTANCE = new Singleton();
    }
    //推荐使用
    //提供一个静态的共有的方法，直接返回 SingletonInstance.INSTANCE
    public static Singleton getInstance(){
        return SingletonInstance.INSTANCE;
    }

}
